﻿#include "appconfig.h"

#include "appcommon.h"

#include <QDir>
#include <QFile>
#include <QResource>

#define CURRENT_CONFIG_VERSION 2

AppConfig::AppConfig() {
    QString appPath = AppCommon::getAppRootPath();
    m_baseConfigFilePath = "://qrc/ep_vpn_client.conf";
}

bool AppConfig::configOK() const {
    return m_configOK;
}

bool AppConfig::loadConfig() {
    QString appPath = AppCommon::getAppRootPath();
    m_configOK = loadConfigFile(appPath + "/ep_vpn_client.conf");
    if (!m_configOK) {
        if (!checkAndRestoreConfigFile(true)) {
            return false;
        }
    }

    m_configOK = loadConfigFile(appPath + "/ep_vpn_client.conf");
    return m_configOK;
}

bool AppConfig::checkAndRestoreConfigFile(bool force) {
    // 检查目标文件是否已经存在
    if (QFile::exists(m_configFilePath) && !force) {
        return true;
    }

    // 如果目标文件不存在，则尝试复制文件
    QDir destDir(QFileInfo(m_configFilePath).path());
    if (!destDir.exists()) {
        // 如果目标路径的上级目录不存在，则创建所有上级目录
        if (!destDir.mkpath(".")) {
            return false;
        }
    }

    // 复制资源文件到目标路径
    QFile outFile(m_configFilePath);
    if (!outFile.open(QIODevice::WriteOnly)) {
        return false; // 无法打开目标文件
    }

    QResource baseResource(m_baseConfigFilePath);
    if (!baseResource.isValid()) {
        return false; // 无效的资源文件
    }

    outFile.write(reinterpret_cast<const char *>(baseResource.data()), baseResource.size());
    outFile.close();

    return true; // 复制成功
}
